﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Kinect;
using System.Diagnostics;

namespace KinectGestureRecognition.Interfaces
{
    public abstract class GestureDetectionStrategy
    {
        #region Constructor
        protected  GestureDetectionStrategy(String GestureDetectionName)
        {
            this._GestureDetectionName = GestureDetectionName;
            Debug.WriteLine("GestureDetectionModul loaded: " + GestureDetectionName);
        }
        #endregion  

        #region Delegates
        public delegate void GestureDetectedEvent(object sender);
        public event GestureDetectedEvent OnGestureDetectedEvent;
        public void ThrowOnGestureDetectedEvent()
        {

            if (OnGestureDetectedEvent != null)
            {
                OnGestureDetectedEvent(this);
            }
        }
        #endregion

        #region members
        private String _GestureDetectionName;
        #endregion

        #region Methods
        public abstract void UpdateDetection(Skeleton[] skeletons, long frameTimestamp);
        #endregion

        #region Properties
        public String GestureDetectionName
        {
            get { return _GestureDetectionName; }
        }
        #endregion
    }
}
